//	Capsule.cpp : main capsule handler
//
//	Author: Miroslav Hauser, hauz {at} students.zcu.cz
//	Version: 0.3
//
#include "GradeIface.h"
#include "dataprovider.h"

#include <iostream>
#include <fstream>
#include <string>

#include <Windows.h>
#include <stdio.h>


//	Test wether I am in the requested node and if so, read the file and
//	send me back. If I am in the source node back, unload the data and end me.
//
void __stdcall EvalNode(ICapsuleAPI *capsule_api) {
//	ILogger			*logger;
//	IServer			*server;
//	IStream			*data;
//	TGradeAddr		localAddr;
//
//	LARGE_INTEGER	start;
//	ULARGE_INTEGER	tmp;
//	struct file_request	actualRequest;
//
//	capsule_api->GetDataLoad(&data);
//	capsule_api->GetLogger(&logger);
//	capsule_api->GetServer(&server);
//
//	start.HighPart = 0;
//	start.LowPart = 0;
//	server->Address(&localAddr);
//
//	data->Seek(start, STREAM_SEEK_SET, &tmp);
//	data->Read(&actualRequest, sizeof(struct file_request), NULL);
//
//	if (IsEqualGUID(actualRequest.destAddr, localAddr))	{ // target node
//		logger->LogString("Request for file:");
//		logger->LogString(actualRequest.fileName);
//
//		std::ifstream inFile(actualRequest.fileName);
//		if (inFile.is_open()) {
//			logger->LogString("FOUND");
//			actualRequest.success = true;
//			std::string	line;
//			std::string	wholeFile;
//
//			while (std::getline(inFile, line)) {
//				wholeFile += line + '\n';
//			}
//			inFile.close();
//
//			// update data load
//			capsule_api->SetDst(actualRequest.srcAddr);
//			strncpy_s(actualRequest.fileData, wholeFile.c_str(), MAX_FILE_BUF);
//
//			data->Seek(start, STREAM_SEEK_SET, &tmp);
//			data->Write(&actualRequest, sizeof(actualRequest) /* TODO */, NULL);
//		} else {
//			actualRequest.success = false;
//			logger->LogString("NOT FOUND");
//
//			capsule_api->SetDst(actualRequest.srcAddr);
//		}
//
//	} else if (IsEqualGUID(actualRequest.srcAddr, localAddr)) { // home node
//		data->Seek(start, STREAM_SEEK_SET, &tmp);
//		int ret = capsule_api->SendData(actualRequest.srcApp, data);
//		if (ret != 0) {
//			logger->LogString("Error reading data from capsule.");
//		}
//
//		capsule_api->Finish();	// end the capsules life
//	}
//}
}